package E_2024;

import java.util.Arrays;

public class E_200_1 {
    /*
    题目描述：
        存在一个m*n的二维数组，其成员取值范围为0,1,2。其中值为1的元素具备同化特性，每经过1S，将上下左右值为0的元素同化为1。而值为2的元素，免疫同化。
        将数组所有成员随机初始化为0或2，再将矩阵的[0,0]元素修改成1，在经过足够长的时间后，求矩阵中有多少个元素是0或2（即0和2数量之和）。
    输入描述：
        输入的前两个数字是矩阵大小。后面的数字是矩阵内容。
    输出描述：
        返回矩阵中非1的元素个数
    补充说明：
        m和n不会超过30(含30)。
    示例1
        输入：
            4 4
            0 0 0 0
            0 2 2 2
            0 2 0 0
            0 2 0 0
        输出：
            9
     */
    public static void main(String[] args) {
        System.out.println(ans(new int[][]{{0,0,0,0},{0,2,2,2},{0,2,0,0},{0,0,0,0}}));
    }
    public static int ans(int[][] arg){
        int num1 = set1(arg,0,0);
        for (int[] ints : arg) {
            System.out.println(Arrays.toString(ints));
        }
        return arg.length * arg[0].length - num1;
    }
    public static int set1(int[][] arg, int x, int y){
        if (x < 0 || x >= arg.length || y < 0 || y >= arg[0].length || arg[x][y] == 2 || arg[x][y] == 1) return 0;
        int nums = 1;
        arg[x][y] = 1;
        nums += set1(arg,x,y+1);
        nums += set1(arg,x+1,y);
        nums += set1(arg,x,y-1);
        nums += set1(arg,x-1,y);
        return nums;
    }
}
